const CCE_TOOLKIT = {
	// 验证手机号
	verify_phone(phone = '') {
		/* Boolean */
		return /^1[3-9]{1}[0-9]{9}$/.test(phone)
	},
	// 校验数据类型
	verify_type(target) {
		/* String */
		//Expect Result: Number Boolean String  Array Arguments Function Error RegExp Date Object ..
		const originType = Object.prototype.toString.call(target);
		return originType.slice(8, -1)
		// return originType.match(/(?<=^\[object ).*(?=\]$)/)['0']
	},
	// 数组去重
	removethesame_array(arrayObj) {
		/* Array */
		return [...new Set(arrayObj)]
	},
	// h5 动态引入js文件
	h5_loadScript(path, async, onload, id, doc) {
		var root = doc != null ? doc : document
		var script = root.createElement('script')
		script.src = path
		script.onload = onload
		if (async) {
			script.async = async
		}
		if (id) {
			script.id = id
		}
		document.body.appendChild(script)
	},
	// h5 获取url参数，以对象形式返回
	getQueryObject() {
		const url = decodeURI(window.location.search) // 取得整个地址栏
		const search = url.substring(url.lastIndexOf('?') + 1)
		const obj = {}
		const reg = /([^?&=]+)=([^?&=]*)/g
		// [^?&=]+表示：除了？、&、=之外的一到多个字符
		// [^?&=]*表示：除了？、&、=之外的0到多个字符（任意多个）
		search.replace(reg, function(rs, $1, $2) {
			const name = decodeURIComponent($1)
			let val = decodeURIComponent($2)
			val = String(val)
			obj[name] = val
			return rs
		})
		return obj
	},
	// 防抖函数
	debounce(func, wait) {
		let timer;
		return () => {
			clearTimeout(timer);
			timer = setTimeout(func, wait);
		};
	},
	// 节流函数
	throttle(func, wait) {
		let last = 0;
		return () => {
			const current_time = +new Date();
			if (current_time - last > wait) {
				func.apply(this, arguments);
				last = +new Date();
			}
		};
	},
	// 柯里化函数
	curry(fn) {
		const args = [...arguments].slice(1);
		return function() {
			return fn.apply(null, args.concat([...arguments]));
		}
	},
	/**
	* 前导补0
	* @param num： 被操作数
	* @param n： 固定的总位数
	*/
	prefixZero(num, n) {
	    return (Array(n).join(0) + num).slice(-n);
	}
}

export default CCE_TOOLKIT
